<template>
</template>

<script>
	//Module
		//导出,不能导出值，要导出一个变量
			//命名导出
				export const PI = 3.14;          // 导出常量
				export function add(a, b) {       // 导出函数
				  return a + b;
				}
				export class Calculator {        // 导出类
				  // ...
				}
			//默认导出
				export default function multiply(a, b) {  // 默认导出
				  return a * b;
				}
			//导出重命名
				function log(message) {
				  console.log(message);
				}
				export { log as print };  
		//导入
			//导入默认multiply和命名导出的常量
				import multiply, { PI } from './math.js'; 
			//导入所有
				import * as math from './math.js'
			//动态导入
				import('./math.js').then(math => {
				    console.log(math.PI);
				  });//import('./math.js')是一个promise，导出的就是这个promise的resolve中的内容（也就是导出的内容）
		//重导出
			export { PI } from './math.js';      // 重导出 math.js 的 PI
			export { default as React } from 'react';  // 重导出默认内容并命名
		//循环引用，解析到a.js的时候，发现依赖b，于是先加载b，a被挂起，b加载完，a再继续加载，所以输出b
			// a.js
			import { b } from './b.js';
			export const a = 'A';
			console.log(b); // 输出：B 
			
			// b.js
			import { a } from './a.js';
			export const b = 'B';
			console.log(a); // 输出：undefined 
	//Array.prototype.includes，数组中是否包含某个元素
		// 对比 indexOf
		console.log(arr.includes(2));     // true，可以处理NAN，为true
		console.log(arr.indexOf(2) !== -1); // true（旧写法）
	//Array.prototype.at
		const arr = ['a', 'b', 'c', 'd'];
		
		console.log(arr.at(1));   // 'b'
		console.log(arr.at(-1));  // 'd'（等同于 arr[arr.length -1]）
		console.log(arr.at(-2));  // 'c'
	//Object.entries
		const person = { name: 'Alice', age: 30 };
		
		// 转为数组
		console.log(Object.entries(person)); 
		// [ ['name', 'Alice'], ['age', 30] ]
	// Object.values
		const person = { name: 'Bob', age: 25 };
		
		console.log(Object.values(person)); // ['Bob', 25]
</script>

<style>
</style>